<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        function a() {
            function b() {
                console.log(cc);
                function c() {
                    var cc = 123;
                }
                c();
            }
            b();
        }
        a(); // a函数不执行，不会导致b被定义，系统不会看函数的内容，除非函数被执行

        // 所有aAO 都是一个对象
        // a defined  a.[[scope]]  -- > 0: GO 

        // a doing    a.[[scope]]  -- > 0: aAO 
        //                              1: GO 

        // b defined  b.[[scope]]  -- > 0: aAO 
        //                              1: GO 

        // b doing    b.[[scope]]  -- > 0: bAO 
        //                              1: aAO 
        //                              2: GO 

        // c defined   c.[[scope]] -- > 0: bAO 
        //                              1: aAO 
        //                              2: GO 

        // c doing    c.[[scope]]   -- > 0: cAO 
        //                               1: bAO 
        //                               2: aAO 
        //                               3: GO 
        
        // 如果c再次被执行，会生成一个新的对象new cAO 
        // c doing    c.[[scope]]   -- > 0: new cAO 
        //                               1: bAO 
        //                               2: aAO 
        //                               3: GO 


    </script>
</body>
</html>